<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>学生搜索</title>
</head>

<body>
<div id="app">
    <!-- 搜索输入框，绑定 input 事件到 searchStudents 方法 -->
    <input type="text" v-model="searchKeyword" @input="searchStudents" placeholder="输入姓名关键字搜索">
    <table>
        <tr>
            <th>编号</th>
            <th>姓名</th>
            <th>性别</th>
            <th>电话</th>
            <th>住址</th>
        </tr>
        <tr v-for="stu in displayedStudents" :key="stu.id">
            <td>{{stu.id}}</td>
            <td>{{stu.name}}</td>
            <td>{{stu.gender}}</td>
            <td>{{stu.cellphone}}</td>
            <td>{{stu.address}}</td>
        </tr>
    </table>
</div>
<script src="js/vue.min.js"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script>
    new Vue({
        el: '#app',
        data: {
            students: [], // 从后台获取的完整学生集合
            displayedStudents: [], // 用于显示在表格中的学生集合
            searchKeyword: '' // 搜索关键字
        },
        methods: {
            // 连接后台，加载学生数据
            loadStudents() {
                axios.get('http://localhost:8080/findStudents')
                    .then(result => {
                        console.log(result.data);
                        if (result.data.code === 200) {
                            // 把后台数据绑定到模型中
                            this.students = result.data.data;
                            this.displayedStudents = this.students; // 初始时显示全部学生
                        }
                    })
                    .catch(error => {
                        console.error('请求出错:', error);
                    });
            },
            // 根据搜索关键字过滤学生列表
            searchStudents() {
                if (!this.searchKeyword) {
                    // 如果搜索关键字为空，显示全部学生
                    this.displayedStudents = this.students;
                } else {
                    // 过滤出姓名包含搜索关键字的学生
                    this.displayedStudents = this.students.filter(stu => {
                        return stu.name.toLowerCase().includes(this.searchKeyword.toLowerCase());
                    });
                }
            }
        },
        // 组件挂载完成后调用加载学生方法
        mounted() {
            this.loadStudents();
        }
    });
</script>
</body>

</html>